/*
 * @Author: hanxin 
 * @Date: 2021-08-14 10:41:07 
 * @Last Modified by: hanxin
 * @Last Modified time: 2021-08-15 22:35:47
 * 专门负责文件消息处理的类
 */
package service;


import java.io.FileInputStream;

import java.io.ObjectOutputStream;

import common.Message;
import common.MessageType;
import java.util.Date;

public class fileService {

    /**
     * 向指定用户传输文件方法
     * 
     * @param sender
     * @param getter
     * @param src
     */
    public void sendfile(String sender, String getter, String src) {
        try {
            Message mess = new Message();
            mess.setSender(sender);
            mess.setGetter(getter);
            mess.setMessType(MessageType.MESSAGE_FILE_MES);
            mess.setSrc(src);
            mess.setSendTime(new Date().toString());

            FileInputStream fStream = new FileInputStream(src);
            // 将字节数组大小设置为要读取文件的大小
            // byte fileData[] = new byte[(int) new File(src).length()];

            // 用工具类中的读取文件方法,将指定文件读取并写入到字节数组中
            byte fileData[] = Streamutil.streamtoArray(fStream);

            // 将读取出来的字节数组封装到message对象中
            mess.setData(fileData);

            fStream.close();

            /**************************** ******************/
            System.out.println("\n" + sender + " to " + getter + " send_file");

            // 发送文件到服务器转发
            ObjectOutputStream oos = new ObjectOutputStream(
                    manageClienToServerThread.returnThread(sender).getSocket1().getOutputStream());

            oos.writeObject(mess);

        } catch (Exception exception) {
            System.out.println("wrong_path_or_network_congestion");
        }

    }
}
